﻿using System;
using Microsoft.SPOT;

namespace netmfSX
{
    public class StringExtensions
    {

        protected static readonly string[] hexes = new string[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", };
        public static string X2String(byte b)
        {
            string s = hexes[(b >> 4)];
            s += hexes[b & 0x0F];
            return s;
        }

        public static string XnString(ref byte[] b, int length)
        {
            string s = "";
            for (int i = 0; i < length; i++)
            {
                s += X2String(b[i]);
            }
            return s;
        }

        public static string XnString(ref byte[] b)
        {
            return XnString(ref b, b.Length);
        }

        protected static readonly string[] asciis = new string[] {
            "", "", "", "", "", "", "", "\a", "\b", "\t", "\n", "\v", "\f", "\r", "", "",
            "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
            " ", "!", "\"", "#", "$", "%", "&", "\'", "(", ")", "*", "+", ",", "-",  ".",  "/",  
            "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ":", ";", "<", "=", ">", "?",
            "@", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O",
            "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "[", "\\", "]", "^", "_", 
            "`", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o",
            "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "{", "|", "}", "~", "",
            //"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
        };
        public static string GetString(ref byte[] b)
        {
            string s = "";
            for (int i = 0; i < b.Length; i++)
            {
                s += asciis[b[i] & 0x7F];
            }
            return s;
        }

        public static bool EqualsIgnoreCase(string s1, string s2)
        {
            return s1.ToUpper().Equals(s2.ToUpper());
        }

        public static bool Int32TryParse(string s, out int i)
        {
            bool b = false;
            i = 0;

            try
            {
                i = int.Parse(s);
            }
            catch
            {
            }
            return b;
        }
    }
}
